package r25.character;

import java.util.List;

import r25.engine.GameInstance;
import r25.engine.IGameInstance.CHARACTER_ACTION;
import r25.engine.IGameService.CHARACTER_ROLE;
import r25.tools.IParametrable;

public interface ICharacter extends IInRoomObject, IParametrable {
	public abstract boolean isAlive();

	public abstract void setAlive(boolean isAlive);

	public abstract ReminderToken getReminderToken();

	public abstract boolean isReminderTokenUsable();

	public abstract void setRole(CHARACTER_ROLE prisoner);

	public abstract CHARACTER_ROLE getRole();

	public abstract ICharacter newInstance();

	public abstract void setPlayer(int player);

	/**
	 * @return the number of player (starting at 1)
	 */
	public abstract int getPlayer();

	public abstract int countCharacterActions();

	public abstract List<CHARACTER_ACTION> availableCharacterActions();

	public abstract void setGameInstance(GameInstance gameInstance);
}
